package com.xz.db.core;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;

import java.io.Serializable;
import java.util.Collection;

/**
 */
public interface IBaseMapper<T> extends BaseMapper<T> {

    /**
     * 根据 ID 查询,带锁
     *
     * @param id 主键ID
     */
    T selectByIdWithLock(Serializable id);

    /**
     * 根据id更新时，固定更新某些字段( 不包含逻辑删除字段 )
     *
     * @param entity 更新对象
     * @return 影响行数
     */
    int alwaysUpdateSomeColumnById(@Param(Constants.ENTITY) T entity);

    /**
     * 批量修改
     * @param entity
     * @param ids
     * @return
     */
    int updateBatchByIds(@Param("entity") T entity, @Param("ids") Collection<Integer> ids);

    /**
     * 批量新增
     * @param list
     * @return
     */
    int insertBatch(@Param("list") Collection<T> list);


}
